package com.cs.deviceManager.domain;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

/**
 * 设备指令对象 dev_device_command
 * 用于管理间歇性设备控制指令的全生命周期
 * 
 * @author zizige
 * @date 2025-06-30
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class DevDeviceCommand extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 指令ID */
    private Long commandId;

    /** 设备ID */
    @Excel(name = "设备ID")
    private String deviceId;

    /** 设备编号 */
    @Excel(name = "设备编号")
    private String deviceNumber;

    /** 指令类型 */
    @Excel(name = "指令类型")
    private String commandType;

    /** 指令内容(JSON格式) */
    @Excel(name = "指令内容")
    private String commandContent;

    /** 指令状态：PENDING-待执行，SENT-已下发，SUCCESS-成功，FAILED-失败，TIMEOUT-超时 */
    @Excel(name = "指令状态")
    private String status;

    /** 重试次数 */
    @Excel(name = "重试次数")
    private Integer retryCount;

    /** 最大重试次数 */
    @Excel(name = "最大重试次数")
    private Integer maxRetryCount;

    /** 下发时间 */
    @Excel(name = "下发时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date sendTime;

    /** 完成时间 */
    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date executeTime;

    /** 设备反馈结果 */
    @Excel(name = "设备反馈结果")
    private String feedbackResult;

    /** 指令过期时间 */
    @Excel(name = "指令过期时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date expireTime;

    /** 备注信息 */
    @Excel(name = "备注信息")
    private String remark;
}